home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / Oberon⁄F™ 1.2 / Preinstalled version / Mac / Mod / DialogUtils (.txt) < prev    next >
Encoding:
Oberon Document  |  1995-06-15  |  4.4 KB  |  121 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. TextViews.StdViewDesc
  11. TextViews.ViewDesc
  12. TextModels.StdModelDesc
  13. TextModels.ModelDesc
  14. TextModels.AttributesDesc
  15. Geneva
  16. Geneva
  17. MODULE MacDialogUtils;
  18.     IMPORT
  19.         SYSTEM, MacTypes, MemoryMgr := MacMemoryMgr, ResourceMgr := MacResourceMgr,
  20.         QuickDraw := MacQuickDraw, DialogMgr := MacDialogMgr, WindowMgr := MacWindowMgr,
  21.         ControlMgr := MacControlMgr;
  22.     CONST
  23.         UT = 1;
  24.         HANDLE = 2;
  25.         DITL = 4449544CH;
  26.         ctrlItem = 4;
  27.         btnCtrl = 0;
  28.         chkCtrl = 1;
  29.         radCtrl = 2;
  30.         resCtrl = 3;
  31.         statText = 8;
  32.         editText = 16;
  33.         iconItem = 32;
  34.         picItem = 64;
  35.     TYPE
  36.         DialogItem = RECORD (MacTypes.Data)
  37.             handle: MacTypes.Handle;
  38.             bounds: MacTypes.Rect;
  39.             type: SHORTINT;
  40.             len: CHAR;
  41.             (* data: ARRAY len OF SYSTEM.BYTE *)
  42.         END;
  43.         DialogItemPtr = POINTER TO DialogItem;
  44.         ItemList = RECORD (MacTypes.Data)
  45.             maxIndex: INTEGER;
  46.             items: ARRAY [UT] 1 OF DialogItem
  47.         END;
  48.         ItemListHandle = POINTER [HANDLE] TO ItemList;
  49.     PROCEDURE AppendDITL* (dialog: DialogMgr.DialogPtr; itemListID: INTEGER): INTEGER;
  50.         VAR
  51.             offset: MacTypes.Point;
  52.             maxRect: MacTypes.Rect;
  53.             appendItemList: ItemListHandle;
  54.             item: DialogItemPtr;
  55.             dlgItemList: ItemListHandle;
  56.             firstItem: INTEGER;
  57.             newItems, dataSize, i, err, int: INTEGER;
  58.             ch: ControlMgr.ControlHandle;
  59.             str: MacTypes.Str255;
  60.     BEGIN
  61.         ASSERT(dialog # NIL, 20);
  62.         maxRect := dialog.portRect;
  63.         offset.v := maxRect.bottom; offset.h := 0;
  64.         DEC(maxRect.bottom, 5); DEC(maxRect.right, 5);
  65.         dlgItemList := SYSTEM.VAL(ItemListHandle, dialog.items);
  66.         firstItem := dlgItemList.maxIndex + 2;
  67.         appendItemList := SYSTEM.VAL(ItemListHandle, ResourceMgr.GetResource(DITL, itemListID));
  68.         IF appendItemList = NIL THEN RETURN firstItem END;
  69.         MemoryMgr.HLock(appendItemList);
  70.         newItems := appendItemList.maxIndex + 1;
  71.         item := SYSTEM.VAL(DialogItemPtr, SYSTEM.ADR(appendItemList.items));
  72.         i := 0;
  73.         WHILE i # newItems DO
  74.             QuickDraw.OffsetRect(item.bounds, offset.h, offset.v);
  75.             QuickDraw.UnionRect(item.bounds, maxRect, maxRect);
  76.             dataSize := ORD(item.len);
  77.             CASE item.type MOD 128 OF
  78.             | ctrlItem + btnCtrl, ctrlItem + chkCtrl, ctrlItem + radCtrl:
  79.                 SYSTEM.MOVE(SYSTEM.ADR(item.len), SYSTEM.ADR(str), dataSize+1);
  80.                 item.handle := ControlMgr.NewControl(dialog, item.bounds, str, TRUE, 0, 0, 1, item.type MOD 4, 0)
  81.             | ctrlItem + resCtrl:
  82.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  83.                 item.handle := ControlMgr.GetNewControl(int, dialog);
  84.                 ch := SYSTEM.VAL(ControlMgr.ControlHandle, item.handle);
  85.                 ch.contrlRect := item.bounds
  86.             | statText, editText:
  87.                 err := MemoryMgr.PtrToHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(item.len) + 1), item.handle, dataSize)
  88.             | iconItem:
  89.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  90.                 item.handle := QuickDraw.GetIcon(int);
  91.             | picItem:
  92.                 SYSTEM.GET(SYSTEM.ADR(item.len) + 1, int);
  93.                 item.handle := QuickDraw.GetPicture(int)
  94.             ELSE
  95.                 item.handle := NIL
  96.             END;
  97.             IF ODD(dataSize) THEN INC(dataSize) END;
  98.             item := SYSTEM.VAL(DialogItemPtr, SYSTEM.VAL(LONGINT, item) + dataSize + SIZE(DialogItem));
  99.             INC(i)
  100.         END;
  101.         err := MemoryMgr.PtrAndHand(SYSTEM.VAL(MacTypes.Ptr, SYSTEM.ADR(appendItemList.items)), dlgItemList, MemoryMgr.GetHandleSize(appendItemList) - 2);
  102.         INC(dlgItemList.maxIndex, newItems);
  103.         MemoryMgr.HUnlock(appendItemList);
  104.         ResourceMgr.ReleaseResource(appendItemList);
  105.         INC(maxRect.bottom, 5); INC(maxRect.right, 5);
  106.         WindowMgr.SizeWindow(dialog, maxRect.right, maxRect.bottom, TRUE);
  107.         RETURN firstItem
  108.     END AppendDITL;
  109. END MacDialogUtils.
  110. TextControllers.StdCtrlDesc
  111. TextControllers.ControllerDesc
  112. Containers.ControllerDesc
  113. Controllers.ControllerDesc
  114. TextRulers.StdRulerDesc
  115. TextRulers.RulerDesc
  116. TextRulers.StdStyleDesc
  117. TextRulers.StyleDesc
  118. TextRulers.AttributesDesc
  119. Geneva
  120. Documents.ControllerDesc
  121.